import { defineStore } from "pinia";
import { getProductList } from '@/api/product.js';

// 定义名为 'product' 的 Pinia store
export const useProductDatatore = defineStore("productsData", {
  // state 定义存储状态
  state: () => ({
    shopDatas: [], // 存储产品数据的数组
  }),
  // actions 定义可执行的操作
  actions: {
    // 获取产品数据的操作
   async fetchshopData() {
      try {
        const res = await getProductList();
        if (res.data.code === 200) {
          this.shopDatas = res.data.product;
        }
      } catch (error) {
        console.error("Error", error);
      }
    },

    // id过滤
    getProductById(id) {
      return this.shopDatas.find((product) => product.id === id);
    },
    // 添加新产品
    addProduct(product) {
      this.shopDatas.push(product); // 将新产品添加到 shopData 数组中
    },
    // 编辑现有产品
    editProduct(updatedProduct) {
      const index = this.shopDatas.findIndex(
        (product) => product.id === updatedProduct.id
      ); // 查找要更新的产品索引
      if (index !== -1) {
        // 如果找到该产品，用更新后的产品替换原产品
        this.shopDatas.splice(index, 1, updatedProduct);
      }
    },
    // 删除产品
    deleteProduct(id) {
      // this.shopDatas = this.shopDatas.filter((product) => product.id !== id); // 从 shopData 数组中删除指定 id 的产品
      const index = this.shopDatas.findIndex(product => product.id === id);

      if (index !== -1) {
        this.shopDatas.splice(index, 1);
      }
    },
  },
  // 定义 store 的 getters
  getters: {
    // 获取所有商品
    shopItems: (state) => state.shopDatas,
  },
  // persist 配置持久化
  persist: {
    enabled: true,
    strategies: [
      {
        key: "productsData",
        storage: localStorage,
      },
    ],
  },
});
